package com.yangyang.ralearn.common.entity.domain;

import com.yangyang.ralearn.common.Constants;
import com.yangyang.ralearn.common.JEnvironment;
import com.yangyang.ralearn.common.entity.base.AbstractDomainPredicate;
import com.yangyang.ralearn.common.types.JObject;

public class RobotPredicate extends AbstractDomainPredicate {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3750177696909779763L;

	public RobotPredicate(JEnvironment environment, String type,
			JObject... params) {
		super(environment, type, params);
		// TODO Auto-generated constructor stub
	}

	@Override
	public int getPreDistance(AbstractDomainPredicate pre) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public boolean contraPredicate(AbstractDomainPredicate pre) {
		// TODO Auto-generated method stub
		if (this.getName().equals("handempty") // 手空与非空
				&& pre.getName().equals("holding")
				|| this.getName().equals("holding")
				&& pre.getName().equals("handempty")
				|| this.getName().startsWith(Constants.NEG_PREFIX) // 添加谓词和删除谓词
				&& this.getName().substring(1).equals(pre.getName())
				&& this.getPraramValues().equals(pre.getPraramValues())
				|| pre.getName().startsWith(Constants.NEG_PREFIX)
				&& pre.getName().substring(1).equals(this.getName())
				&& pre.getPraramValues().equals(this.getPraramValues())
				|| this.getPraramValues().equals(pre.getPraramValues())
				&& (this.getName().equals("holding")
						&& pre.getName().equals("ontable") || this.getName()
						.equals("ontable") && pre.getName().equals("holding"))) {
			return true;
		}
		return false;
	}

}
